A graphics processing unit (GPU) can be a useful resource to accomplish activities such as accelerating three dimensional (3D) graphics and video processing due to the parallel computing nature of these tasks. More specifically, the highly parallel structure of a GPU makes it more effective than a general-purpose CPU for algorithms that process large blocks of data in parallel such as 3D graphics that involve, for example, transforms, lighting, textures, shading, etc. In computing systems that contain both a computer processor unit (CPU) and a GPU, computations such as 3D graphics or motion compensation performed for video decoding, that are simple, repetitive, high throughput, and not as latency sensitive can be offloaded to a GPU in order to provide faster computations and leave more room for other tasks to be processed by the CPU.
A typical computing system is expected to have a much larger number of CPU cores than GPUs. GPUs come in a variety of forms. A GPU might be integrated with the CPU on the same chip and share system memory or may be made available on a separate card connected to the CPU and memory through, for example, a PCI (Peripheral Controller Interface) bus.